#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>

int main(int argc, char *argv[])
{
    printf("父/main(%d)进程开始执行\n",getpid());

    //创建一个子进程
    pid_t pid = fork();
    if(pid == 0) //子进程
    {
        printf("子进程(%d)开始执行,\n",getpid());

        //使用execve函数执行other程序
        char *path = "/home/tom/桌面/workspace/linux_app/3_Process/other";
        char *argv[] = {path,"abc",NULL};//数组最后一个元素必须为NULL
        char *envp[] = {NULL};//环境变量数组最后一个元素必须为NULL
        //execve如果执行成功，则不会返回，如果执行失败，则返回-1
        int result = execve(path,argv,NULL);//NULL代表使用默认的环境变量
        printf("execve执行失败，result=%d\n",result);
        return -1;
    }
    else if(pid > 0)//父进程 pid为子进程的id
    {
        printf("父进程(%d)继续执行\n",getpid());
    }
    printf("进程(%d)即将退出\n",getpid());
    return 0;
}